# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under both the MIT license found in the
# LICENSE-MIT file in the root directory of this source tree and the Apache
# License, Version 2.0 found in the LICENSE-APACHE file in the root directory
# of this source tree.

import argparse
import json
import os
import sys


def main(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--output", "-o", type=argparse.FileType("w"), default=sys.stdin
    )
    parser.add_argument(
        "--relative-to",
    )
    parser.add_argument("mappings", nargs="*")
    args = parser.parse_args(argv[1:])

    for mapping in args.mappings:
        with open(mapping) as f:
            obj = json.load(f)

        if args.relative_to is not None:
            obj = {
                "jarPath": os.path.relpath(obj["jarPath"], args.relative_to),
                "classes": [
                    {
                        "className": c["className"],
                        "srcPath": os.path.relpath(c["srcPath"], args.relative_to),
                    }
                    for c in obj["classes"]
                ],
            }

        json.dump(obj, args.output)
        print("", file=args.output)


sys.exit(main(sys.argv))
